package com.ruoyi.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.business.domain.EquipmentTypes;
import com.ruoyi.business.dto.EquipmentTypeTreeQueryDTO;
import com.ruoyi.business.vo.DeviceVariableStatisticsVO;
import com.ruoyi.business.vo.EquipmentTypeTreeVO;
import com.ruoyi.business.vo.EquipmentStatisticsVO;
//import com.ruoyi.business.vo.EquipPredictDetailVO;
//import com.ruoyi.business.vo.EquipPredictVO;
//import com.ruoyi.business.vo.EquipmentOverviewVo;

import java.util.List;

/**
 * 存储设备类型信息的，支持树状结构Service接口
 * 
 * @author ldkj
 * @date 2025-02-27
 */
public interface IEquipmentTypesService extends IService<EquipmentTypes>
{
    /**
     * 查询存储设备类型信息的，支持树状结构
     * 
     * @param equipmentTypeId 存储设备类型信息的，支持树状结构主键
     * @return 存储设备类型信息的，支持树状结构
     */
    public EquipmentTypes selectEquipmentTypesByEquipmentTypeId(Long equipmentTypeId);

    /**
     * 查询存储设备类型信息的，支持树状结构列表
     * 
     * @param equipmentTypes 存储设备类型信息的，支持树状结构
     * @return 存储设备类型信息的，支持树状结构集合
     */
    public List<EquipmentTypes> selectEquipmentTypesList(EquipmentTypes equipmentTypes);

    /**
     * 新增存储设备类型信息的，支持树状结构
     * 
     * @param equipmentTypes 存储设备类型信息的，支持树状结构
     * @return 结果
     */
    public int insertEquipmentTypes(EquipmentTypes equipmentTypes);

    /**
     * 修改存储设备类型信息的，支持树状结构
     * 
     * @param equipmentTypes 存储设备类型信息的，支持树状结构
     * @return 结果
     */
    public int updateEquipmentTypes(EquipmentTypes equipmentTypes);

    /**
     * 批量删除存储设备类型信息的，支持树状结构
     * 
     * @param equipmentTypeIds 需要删除的存储设备类型信息的，支持树状结构主键集合
     * @return 结果
     */
    public int deleteEquipmentTypesByEquipmentTypeIds(Long[] equipmentTypeIds);

    /**
     * 删除存储设备类型信息的，支持树状结构信息
     * 
     * @param equipmentTypeId 存储设备类型信息的，支持树状结构主键
     * @return 结果
     */
    public int deleteEquipmentTypesByEquipmentTypeId(Long equipmentTypeId);

//    /**
//     * 设备总览-获取设备状态数量
//     * @param equipmentTypes
//     * @return
//     */
//    EquipmentOverviewVo getEquipOverview(EquipmentTypes equipmentTypes);
//
//    /**
//     * 设备管理->>设备预测->>获取设备预测汇总信息
//     * @param equipmentTypes
//     * @return
//     */
//    EquipPredictVO getEquipPredict(EquipmentTypes equipmentTypes);
//
//    /**
//     * 设备管理->>设备预测->>获取设备预测信息列表
//     * @param equipmentTypes
//     * @return
//     */
//    List<EquipPredictDetailVO> getEquipPredictDetailList(EquipmentTypes equipmentTypes);

    /**
     * 导入设备类型数据
     * 
     * @param equipmentTypesList 设备类型数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，是否进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importEquipmentTypes(List<EquipmentTypes> equipmentTypesList, Boolean isUpdateSupport, String operName);

    /**
     * 查询存储设备类型信息的，支持树状结构列表（用于导出，包含父级设备类型名称）
     * 
     * @param equipmentTypes 存储设备类型信息的，支持树状结构
     * @return 存储设备类型信息的，支持树状结构集合
     */
    public List<EquipmentTypes> selectEquipmentTypesListForExport(EquipmentTypes equipmentTypes);

    /**
     * 根据设备类型名称查询设备类型树状结构（包含所有子类和关联的设备变量）
     * 
     * @param equipmentTypeName 设备类型名称
     * @return 设备类型树状结构
     */
    public EquipmentTypeTreeVO selectEquipmentTypeTreeByName(String equipmentTypeName);

    /**
     * 根据设备类型名称查询设备变量平均值
     *
     * @param equipmentTypeName 设备类型名称
     * @return DeviceVariableStatisticsVO
     */
    public DeviceVariableStatisticsVO selectEquipmentTypeAvgByName(String equipmentTypeName);



    /**
     * 查询设备总数及设备参数有值数的统计信息
     * 
     * @return 设备统计信息
     */
    public List<EquipmentStatisticsVO> getEquipmentStatistics();
}
